//============================================================================
/**
 *
 *	@file		phc_diary.h
 *	@brief		PHC日記
 *	@author		hosaka genya
 *	@data		2009.01.29
 *
 */
//============================================================================
#pragma once

#include "savedata/savedata.h"
#include "phc/phc_struct.h"

//=============================================================================
/**
 *								定数定義
 */
//=============================================================================
enum
{
	PHC_DIA_DATA_MAX = 24,	///< データ要素数
};

//=============================================================================
/**
 *								構造体定義
 */
//=============================================================================

//--------------------------------------------------------------
///	PHC日記 パラメータ
//==============================================================
typedef struct {
	// [IN]
	SAVEDATA*		pSaveData;
	PHCDiary*		pDiaryData;
} PHC_DIARY_PARAM;

//--------------------------------------------------------------
///	最終ページ設定用のデータ
//==============================================================
typedef struct {
	const STRCODE* p_myNickName;	///< 自分のポケ ニックネームへのポインタ
	u32	myStepDay;					///< 一日に歩いた歩数
	u16	pokeNumber;					///< 自分のポケ ID
	u8	myFolm : 5;					///< 自分のポケ フォルム
	u8	mySex : 2;					///< 自分のポケ 性別
	u8	myRareColor : 1;			///< 自分のポケ レアカラー
	u8	padding[1];
} PHC_END_PAGE_DATA;

//--------------------------------------------------------------
///	配布ポケモンページ用のデータ
//==============================================================
typedef struct {
	u16	enemyNumber;					///< 自分のポケ ID
	u8	yourFolm : 5;					///< 自分のポケ フォルム
	u8	yourSex : 2;					///< 自分のポケ 性別
	u8	yourRareColor : 1;			///< 自分のポケ レアカラー
	u8 padding[1];
} PHC_SHARE_POKE_PAGE_DATA;

//=============================================================================
/**
 *								プロトタイプ宣言
 */
//=============================================================================
// PROC関数
extern PROC_RESULT PhcDiaryProc_Init( PROC* proc, int* seq );
extern PROC_RESULT PhcDiaryProc_Main( PROC* proc, int* seq );
extern PROC_RESULT PhcDiaryProc_End( PROC* proc, int* seq );

//-----------------------------------------------------------------------------
/**
 *	@brief	最終ページのセット関数
 *
 *	@param	outDiary	セットするページへのポインタ
 *	@param	inData		最終ページ設定用のデータ
 *
 *	@retval	none
 */
//-----------------------------------------------------------------------------
extern void PhcDiary_SetEndPage( PHCDiary* outDiary, const PHC_END_PAGE_DATA* inData );

//-----------------------------------------------------------------------------
/**
 *	@brief	配布ポケモンページ用のデータ設定関数（ページ必要情報だけ上書き）
 *
 *	@param	PHCDiary* DiaryHeadPtr				日記情報の先頭ポインタ
 *	@param	PHC_SHARE_POKE_PAGE_DATA* inDiary	配布ポケモンページに上書きするデータ
 *
 *	@retval	TRUE:配布ポケモンページが存在する
 */
//-----------------------------------------------------------------------------
extern void PhcDiary_SetSharePokePage( PHCDiary* DiaryHeadPtr, const PHC_SHARE_POKE_PAGE_DATA* inData );

//-----------------------------------------------------------------------------
/**
 *	@brief	配布ポケモンページの存在チェック関数
 *
 *	@param	PHCDiary* DiaryHeadPtr				日記情報の先頭ポインタ
 *
 *	@retval	TRUE:配布ポケモンページが存在する
 */
//-----------------------------------------------------------------------------
extern BOOL PhcDiary_CheckSharePokePage( PHCDiary* DiaryHeadPtr );

//-----------------------------------------------------------------------------
/**
 *	@brief	エラーページの存在チェック
 *
 *	@param	PhcDiary* DiaryHeadPtr		日記情報の先頭ポインタ
 *
 *	@retval	TRUE:エラーページあり
 */
//-----------------------------------------------------------------------------
extern BOOL PhcDiary_CheckErrorPage( PHCDiary* DiaryHeadPtr );